home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-08-04 | 4.5 KB | 189 lines | [TEXT/PJMM] |
- unit MyOOMenus;
-
- interface
-
- var
- editEnabled: boolean;
-
- procedure InitOOMenus (defaultproc: procptr);
- procedure DisplayMenuBar;
- procedure FinishOOMenus;
- procedure DoDefaultMenu (themenu, theitem: integer);
- function SetOOMenuBar: boolean;
-
- implementation
-
- uses
- Traps, Balloons, MyTypes, MySystemGlobals, MyMenus, MyStrings, MyVersionResource,{}
- BaseGlobals, MyFMenus, MyOOMainLoop, AERegistry, MyAEUtils, AEObjects;
-
- function SetOOMenuBar: boolean;
- begin
- SetOOMenuBar := FrontObject.SetMenuBar;
- end;
-
- function HandleEditMenu (event, reply: AppleEvent; refcon: longInt): OSErr;
- var
- err: OSErr;
- begin
- FrontObject.DoEditMenu(refcon);
- HandleEditMenu := noErr;
- end;
-
- procedure DoDefaultMenu (themenu, theitem: integer);
- var
- save: grafPtr;
- DAName: str255;
- oe: OSErr;
- begin
- if themenu = M_Apple then begin
- GetPort(save);
- GetItem(GetMHandle(M_apple), theitem, DAName);
- oe := OpenDeskAcc(DAName);
- SetPort(save);
- end
- else if themenu = M_Edit then begin
- if has_AppleEvents then begin
- case theitem of
- EMUndo:
- SendSelfSimpleEvent(kAECoreSuite, kAEUndo);
- EMCut:
- SendSelfSimpleEvent(kAECoreSuite, kAECut);
- EMCopy:
- SendSelfSimpleEvent(kAECoreSuite, kAECopy);
- EMPaste:
- SendSelfSimpleEvent(kAECoreSuite, kAEPaste);
- EMClear:
- SendSelfSimpleEvent(kAECoreSuite, kAEDelete);
- EMSelectAll:
- SendSelfSimpleEvent(kAECoreSuite, kAESelect); { hmmm }
- otherwise
- FrontObject.DoEditMenu(theitem);
- end;
- end
- else begin
- FrontObject.DoEditMenu(theitem);
- end;
- end;
- end;
-
- var
- with_option: boolean;
-
- procedure DoClose;
- begin
- DoCloseAll(with_option);
- end;
-
- procedure SetCloseMenu (themenu, theitem: integer);
- var
- fw: windowPtr;
- er: EventRecord;
- dummy: boolean;
- begin
- fw := FrontWindow;
- if fw = nil then begin
- SetIDItemEnable(themenu, theitem, (fw <> nil) & windowPeek(fw)^.goAwayFlag & (GetWType(fw) <> WT_NotMine));
- end
- else begin
- SetIDItemEnable(themenu, theitem, windowPeek(fw)^.goAwayFlag);
- end;
- dummy := OSEventAvail(everyEvent, er);
- with_option := BAND(er.modifiers, optionKey) <> 0;
- if option_close_str > 0 then begin
- if with_option then begin
- SetIDItem(themenu, theitem, GetGlobalString(option_close_str));
- end
- else begin
- SetIDItem(themenu, theitem, GetGlobalString(normal_close_str));
- end;
- end;
- end;
-
- procedure SetEditMenus (menu, item: integer);
- begin
- FrontObject.SetEditMenuItem(item);
- end;
-
- procedure DoQuit;
- begin
- if has_AppleEvents then begin
- SendSelfSimpleEvent(kCoreEventClass, kAEQuitApplication);
- end
- else begin
- quitNow := true;
- end;
- end;
-
- {$S Init}
- procedure InitOOMenus (defaultproc: procptr);
- var
- mh: menuHandle;
- oe, junk: OSErr;
- hstr: str255;
- vers: versionRecord;
- begin
- quitNow := false;
- editEnabled := true;
- if defaultproc = nil then
- defaultproc := @DoDefaultMenu;
-
- InitFMenus(defaultproc);
-
- MH_Apple := GetFMenu(M_Apple);
- AddResMenu(MH_Apple, 'DRVR');
- InsertMenu(MH_Apple, 0);
-
- MH_File := GetFMenu(M_File);
- InsertMenu(MH_File, 0);
- MH_Edit := GetFMenu(M_Edit);
- InsertMenu(MH_Edit, 0);
-
- M_HM_Help_I := -1;
- hstr := GetGlobalString(help_menu_text);
- if has_HelpMgr and (hstr <> '') then begin
- GetVersion(vers);
- SPrintS3(hstr, hstr, vers.name, '', '');
- oe := HMGetHelpMenuHandle(mh);
- if (oe = noErr) and (mh <> nil) then begin
- AppendMenu(mh, hstr);
- M_HM_Help_I := CountMItems(mh);
- AddFCommand(kHMHelpMenuID, M_HM_Help_I, CHelp);
- end;
- end;
-
- if has_AppleEvents then begin
- junk := AEInstallEventHandler(kAECoreSuite, kAEUndo, @HandleEditMenu, EMUndo, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAECut, @HandleEditMenu, EMCut, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAECopy, @HandleEditMenu, EMCopy, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAEPaste, @HandleEditMenu, EMPaste, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAEDelete, @HandleEditMenu, EMClear, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAESelect, @HandleEditMenu, EMSelectAll, false);
- end;
-
- SetFBoth(Cclose, @DoClose, @SetCloseMenu);
- SetFCommand(Cquit, @DoQuit);
- SetFSetMenu(Cundo, @SetEditMenus);
- SetFSetMenu(Ccut, @SetEditMenus);
- SetFSetMenu(Ccopy, @SetEditMenus);
- SetFSetMenu(Cpaste, @SetEditMenus);
- SetFSetMenu(Cclear, @SetEditMenus);
- SetFSetMenu(Cselectall, @SetEditMenus);
- SetFMenus;
- end;
-
- procedure DisplayMenuBar;
- var
- dummyb: boolean;
- begin
- dummyb := SetOOMenuBar;
- DrawMenuBar;
- end;
-
- {$S Term}
- procedure FinishOOMenus;
- begin
- FinishFMenus;
- end;
-
- end.